/**
* 封装fetch
* creat by zhangguangde
*/

import { stringify } from 'query-string';
import message from './../components/ants/message.js';
export default function(obj) {
	/*
	obj {
		// 请求地址
		url: '',
		// 请求方式
		type: 'GET' | 'POST',
		// 请求参数
		data: {
		}
		// 回调函数
		callback: function(data) {
		}
	}
	*/
	let option = {
		method: obj.type,
		headers: {
			'Content-Type':'application/json;charset=UTF-8'
		}
	}
	// 请求添加请求参数
	if (obj.type === 'POST') {
		// 添加body
		option['body'] = JSON.stringify(obj.data)
	} else if (obj.type === 'GET') {
		// 添加参数
		obj.url = obj.url + (obj.url.indexOf('?') === -1 ? '?' : '&') + stringify(obj.data);
	}
	// 请求
	fetch(obj.url, option)
	.then(res => {
		// 检查状态码
		return checkStatus(res);
	})
	.then(data => {
		// 回调函数
		if (data.code === '0000') {
			// 成功的场合
			obj.callback(data);
		} else {
			message.error(data.message);
		}
	})
	.catch(e => console.log('错误:', e));
}

// 校验状态码，如果非200-300区间，则抛出异常
const checkStatus = (response) => {
	if (response.status >= 200 && response.status < 300) {
		return response.json();
	} else {
		var error = new Error(response.statusText);
		error.response = response;
		throw error;
	}
};
